#ifndef CONFIG_H
#define CONFIG_H
#include <limits.h>
#define PATH_SIZE PATH_MAX


typedef struct serverconfig_t
{
  unsigned        pid; /* id do processo usando essa config */
  unsigned        port; /* porta */
  unsigned        speed; /* velocidade */
  char          root[PATH_SIZE]; /* raiz */
} serverconfig;

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @brief Carrega um arquivo de configuracao.
 * @param filename Nome do arquivo
 * @param conf configuracao
 * @return non-zero em caso de erro */
int serverconfig_load(const char * filename, serverconfig * conf);

/**
 * @brief Salva uma configuracao no arquivo.
 * @param filename Arquivo de configuracao
 * @param conf Configuracao
 * @return non-zero em caso de erro
 */
int serverconfig_save(const char * filename, const serverconfig * conf);

/**
 * @brief Seta um caminho de raiz na config.
 * @param conf Ponteiro para a configuracao]
 * @param rootpath Caminho para a raiz do servidor
 * @return non-zero em caso de erro
 * 
 * @note Essa funcao resolve links simbolicos
 * @note rootpath deve ser <= PATH_SIZE
 */
int serverconfig_setroot(serverconfig * conf, const char * rootpath);

#ifdef __cplusplus
}
#endif

#endif